<?php
App::uses('AppController', 'Controller');
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
//public function
class ExamenesController extends AppController{
    public $layout = 'hospital';
    public $uses = array('Examenespaciente','Exameneslaboratorio', 'Laboratorio', 'Consultasexterna',
        'Paciente', 'SegurosPaciente', 'AlertasPaciente', 'Laboratoriospaciente', 'Claseslaboratorio', 
        'Trauma', 'User', 'Observacioneslaboratorio');
    public $components = array('Fechasconvert');
    
    public function beforeFilter(){
        parent::beforeFilter();
        //$this->Auth->allow();
    }
    
    public function versolicitud($idconsulta=null){
        $laboratorios = $this->Examenespaciente->find('all', array('conditions'=>array('Examenespaciente.consultasexterna_id'=>$idconsulta)));
        $observaciones = $this->Observacioneslaboratorio->find('first', 
                array(
                    'conditions'=>array('Observacioneslaboratorio.consultasexterna_id'=>$idconsulta),
                    'recursive'=>-1
                    ));
        $this->set(compact('laboratorios', 'observaciones'));
    }
    public function examenlaboratorio($idConsulta = null) {
        if (!empty($this->request->data)) {
            $muestras = $this->request->data['Examenespaciente'];
            foreach ($muestras as $m) {
                if(!empty($m['dato'])):
                    //validacion de los resultado
                    $examen = $this->Laboratorio->find('first', array(
                        'conditions' => array('Laboratorio.id'=>$m['laboratorio_id']),
                        'recursive'=>-1));
                    $rangomenor = $examen['Laboratorio']['rangoinicial'];
                    $rangomayor = $examen['Laboratorio']['rangofinal'];
                    $muestra = $m['dato'];
                    if($rangomenor<=$muestra && $muestra<=$rangomayor){
                        $rango= 'D';
                        //echo 'dentro';
                    }else{
                        $rango = 'F';
                        //echo 'fuera';
                    }

                    $data = '';
                    $data = $m;
                    
                    $this->Examenespaciente->create();
                    $this->Examenespaciente->save($data);
                     $data = '';
                    $idExamen = $this->Examenespaciente->getLastInsertID();
                    
                    $data = array('id'=>$idExamen, 'rango'=>$rango);
                    $this->Examenespaciente->save($data);
                    
                
                //fin valida
                else:
                $data = '';
                    $data = $m;
                    
                    $this->Examenespaciente->create();
                    $this->Examenespaciente->save($data);
                endif;
            }//fin foreach
            $idConsulta =$this->request->data['Examenespaciente'][0]['consultasexterna_id'];
            $this->Session->setFlash(__('EXITO: Datos registrados correctamente '));
            $this->redirect(array('action' => 'imprimirresultados', $idConsulta));
        }
        $data = array('id' => $idConsulta, 'estadoatencion' => 'C');
        $this->Consultasexterna->save($data);
        $alertaPaciente = $this->AlertasPaciente->find('first', array(
            'recursive' => 0,
            'conditions' => array('AlertasPaciente.consultasexterna_id' => $idConsulta),
            'order' => array('AlertasPaciente.id DESC')
        ));
        $laboratoriosDelPaciente = $this->Laboratoriospaciente->find('all', array(
            'recursive' => 0,
            'conditions' => array(
                'Laboratoriospaciente.consultasexterna_id' => $idConsulta,
            ),
            'order'=>array('Laboratoriospaciente.subclaseslaboratorio_id ASC')
        ));
        //debug($laboratoriosDelPaciente);exit;
        $clasesDeLaboratorios = $this->Claseslaboratorio->find('all', array(
            'recursive' => -1
        ));
        $ficha = $this->Consultasexterna->find('first', array(
            'conditions' => array('Consultasexterna.id' => $idConsulta)
        ));
        //debug($ficha);exit;
        $detallePaciente = $this->Paciente->find('first', array(
            'recursive' => 1,
            'conditions' => array('Paciente.id' => $ficha['Paciente']['id'])
        ));
        $idPaciente = $detallePaciente['Paciente']['id'];
        $edad = $this->Fechasconvert->calculaEdad($ficha['Paciente']['fecha_nacimiento']);
        $option = array('conditions' => array(
                'SegurosPaciente.paciente_id' => $idPaciente, 'SegurosPaciente.gestion' => date('Y')),
            'order' => array('SegurosPaciente.id DESC')
        );
        $seguro = $this->SegurosPaciente->find('first', $option);
        $this->set(compact('laboratoriosDelPaciente', 'clasesDeLaboratorios', 'detallePaciente', 'ficha', 'edad', 'seguro', 'alertaPaciente'));
    }
    public function imprimirresultados($idConsulta=null){
        
        $resultados = $this->Examenespaciente->find('all', array(
            'conditions'=>array('Examenespaciente.consultasexterna_id'=>$idConsulta),
            'order'=>array('Examenespaciente.subclaseslaboratorio_id ASC')));
        
        if($resultados[0]['Paciente']['fecha_nacimiento'] != null){
            $edad = $this->Fechasconvert->calculaEdad($resultados[0]['Paciente']['fecha_nacimiento']);
        }else{
            $edad = $resultados[0]['Paciente']['fecha_nacimiento'];
        }
        //debug($resultados);exit;
        $options = array('conditions'=>array('Trauma.id'=>$resultados[0]['Consultasexterna']['trauma_id']));
        $trauma = $this->Trauma->find('first', $options);
        $cuadro = $trauma['Trauma']['nombre'];
        $medico = $this->User->find('first', array('conditions'=>array('User.id'=>$resultados[0]['Consultasexterna']['medico_id'])));
        $nombremedico = $medico['User']['apellido_paterno'].' '.$medico['User']['apellido_materno'].' '.$medico['User']['nombre'];
        $this->set(compact('resultados', 'edad', 'cuadro', 'nombremedico'));
    }
    
    public function ajaximprimirresultados($idConsulta=null){
        
        $resultados = $this->Examenespaciente->find('all', array(
            'conditions'=>array('Examenespaciente.consultasexterna_id'=>$idConsulta),
            'order'=>array('Examenespaciente.subclaseslaboratorio_id ASC')));
        
        if($resultados[0]['Paciente']['fecha_nacimiento'] != null){
            $edad = $this->Fechasconvert->calculaEdad($resultados[0]['Paciente']['fecha_nacimiento']);
        }else{
            $edad = $resultados[0]['Paciente']['fecha_nacimiento'];
        }
        $options = array('conditions'=>array('Trauma.id'=>$resultados[0]['Consultasexterna']['trauma_id']));
        $trauma = $this->Trauma->find('first', $options);
        $cuadro = $trauma['Trauma']['nombre'];
        $medico = $this->User->find('first', array('conditions'=>array('User.id'=>$resultados[0]['Consultasexterna']['medico_id'])));
        $nombremedico = $medico['User']['apellido_paterno'].' '.$medico['User']['apellido_materno'].' '.$medico['User']['nombre'];
        $this->set(compact('resultados', 'edad', 'cuadro', 'nombremedico'));
    }
}
?>
